A circuit is an electrical network of components. A circuit may include complex digital circuits comprising tens, hundreds, thousands or more of interconnected components. The components of circuits may comprise a single discrete component such as a resistor, capacitor, inductor, diode, transistor etc. The components may also include other circuits providing more complex components such as an operational amplifier, a voltage regulator, a shift register, an arithmetic logic unit, a microcontroller, a microprocessor, etc. Complex functionality can be provided by connecting a plurality of components together in various manners.
The specific connections of components for a circuit may be defined in numerous fashions. One such definition is called a netlist which specifies a plurality of nets, each of which indicates components, or more particularly ports, or pins, of components, that are connected together. Each component specified in a net may be identified by a reference, and the specific component associated with the reference can be specified separately, typically in a Bill of Materials (BOM).
A typical process for manufacturing complex circuits includes designing the circuit using software, testing the design of the circuit, including functional and timing tests, to ensure it functions as desired. Once the circuit is designed, a physical implementation of the design is created and the circuit can be manufactured in accordance with the created physical design. It can be costly to create the physical implementation and as such, it is desirable to have as few errors as possible in the circuit design prior to creating the physical implementation.
Various techniques exist for testing a circuit during the design stage. These include timing simulations and functional analysis. The techniques may further include logical equivalence checking, which compares a model of the circuit being designed to a golden reference model which describes the desired functionality of the circuit. Although these techniques are useful, they may not identify problems in the design such as mismatched driver and input levels, short-circuits, and other problems. Basic checks for these types of problems may be implemented, but have not been applied to check all components and connections of a circuit being designed, as the time required to apply all of the tests to all of the connections and components make the application infeasible.
It is desirable to have a system and method for validating a circuit design in order to identify potential problems with the design.